/**
 * @file 全局配置 axios
 * @version 1.0.0
 * @author qingxue
 * @createDate 2024-04-06 20:00
 * @updateDate 2024-04-06 20:00
 */

import axios from 'axios';
// import router from "@/router";

// 设置访问根路径
axios.defaults.baseURL='http://localhost:8080';

// 全局请求拦截器
axios.interceptors.request.use((config) => {
    let token = sessionStorage.getItem('token');
    token && (config.headers.token = token); // 请求携带 token
    return config;
});


// 全局响应拦截器
let flag = true; // 节流
axios.interceptors.response.use(res => {
    if (flag && res.data.code === "-1") {
        alert("登录过期，请重新登录");
        // router.push("/login");
        flag = false;
        setTimeout(() => flag = true, 1000);
        return res.data;
    }
    return res.data;
}, error => {
    console.log(error);
});

export default {
    // axios 实例
    axios,
    /**
     * get 请求
     * @param url 请求地址
     * @param params 请求参数
     * @returns {Promise<axios.AxiosResponse<any>>} 请求返回结果
     */
    get(url, params) {
        return axios.get(url, {params});
    },
    /**
     * post 请求
     * @param url 请求地址
     * @param data 请求参数
     * @returns {Promise<axios.AxiosResponse<any>>} 请求返回结果
     */
    post(url, data) {
        return axios.post(url, data);
    },
    /**
     * put 请求
     * @param url 请求地址
     * @param data 请求参数
     * @returns {Promise<axios.AxiosResponse<any>>} 请求返回结果
     */
    put(url, data) {
        return axios.put(url, data);
    },
    /**
     * delete 请求
     * @param url 请求地址
     * @param params 请求参数
     * @returns {Promise<axios.AxiosResponse<any>>} 请求返回结果
     */
    delete(url, params) {
        return axios.delete(url, {params});
    },
    /**
     * patch 请求
     * @param url 请求地址
     * @param data 请求参数
     * @returns {Promise<axios.AxiosResponse<any>>} 请求返回结果
     */
    patch(url, data) {
        return axios.patch(url, data);
    }
};
